//package com.douya.cache.persistence;
//
//import cn.hutool.core.lang.Snowflake;
//import cn.hutool.extra.spring.SpringUtil;
//import com.douya.common.pojo.entity.ElasticSearchEntity;
//import com.google.common.collect.Lists;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.context.ApplicationEventPublisher;
//import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
//import org.springframework.data.elasticsearch.repository.support.AbstractElasticsearchRepository;
//import org.springframework.data.elasticsearch.repository.support.ElasticsearchEntityInformation;
//import org.springframework.data.rest.core.annotation.RepositoryRestResource;
//import org.springframework.stereotype.Repository;
//
//import java.io.Serializable;
//import java.time.LocalDateTime;
//import java.util.List;
//import java.util.Objects;
//
///**
// * elasticSearch dao基类 实现
// *
// * @Author hcy
// * @Date 2022/11/30
// */
//public class BasicElasticRepositoryImpl<T extends ElasticSearchEntity, ID extends Serializable> extends AbstractElasticsearchRepository<T, ID> implements BasicElasticRepository<T, ID> {
//
//    private static final Snowflake SNOWFLAKE = new Snowflake(1, 1);
//
//    public static Long snowflakeId() {
//        return SNOWFLAKE.nextId();
//    }
//
//    @Autowired
//    private ApplicationEventPublisher publisher;
//
//    public BasicElasticRepositoryImpl(ElasticsearchEntityInformation<T, ID> metadata, ElasticsearchOperations elasticsearchOperations) {
//        super(metadata, elasticsearchOperations);
//    }
//
//    @Override
//    protected String stringIdRepresentation(ID id) {
//        return String.valueOf(id);
//    }
//
//
//    /**
//     * 保存 带id更新时间和创建时间
//     *
//     * @param s 实体
//     * @return 实体
//     */
//    @Override
//    public <S extends T> S insert(S s) {
//        if (Objects.isNull(s.getId())) {
//            s.setId(snowflakeId());
//        }
//        if (Objects.isNull(s.getCreateTime())) {
//            s.setCreateTime(LocalDateTime.now());
//        }
//        s.setUpdateTime(LocalDateTime.now());
//        return super.save(s);
//    }
//
//    /**
//     * 保存 带id更新时间和创建时间
//     *
//     * @param iterable 实体
//     * @return 实体
//     */
//    @Override
//    public <S extends T> Iterable<S> insertAll(Iterable<S> iterable) {
//        List<S> list = Lists.newArrayList();
//        for (S item : iterable) {
//            list.add(insert(item));
//        }
//        return list;
//    }
//
//
//}
